package cn.yuanqiao.es.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * es搜索服务查询模块
 *
 * @ProjectName: ruoyi-modules-system
 * @Package: cn.yuanqiao.es.mapper
 * @ClassName: ElasticsearchApiMapper
 * @Author: lenovo
 * @Description: hbWang
 * @Date: 2023/6/20 10:08
 * @Version: 1.0
 */
@Mapper
public interface ElasticsearchApiMapper {
    /**
     * 查询档案门类信息
     *
     * @param
     * @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
     * @author hbWang
     * @date 2023/6/20 10:47
     */
    List<Map<String, Object>> selectCategoryTableData(@Param("tableName") String tableName, @Param("fileTableName") List<String> fileTableName);

    /**
     * 查元数据方案信息
     *
     * @param tableName 表名字
     * @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
     * @author hbWang
     * @date 2023/6/25 10:17
     */
    List<Map<String, Object>> selectMDataListTableData(@Param("tableName") String tableName, @Param("sql") String sql);

    List<Map<String, Object>> selectMDataListTableDataNew(@Param("tableName") String tableName, @Param("sql") String sql);

    /**
     * 查询组件信息
     *
     * @param
     * @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
     * @author hbWang
     * @date 2023/6/25 11:44
     */
    List<Map<String, Object>> selectFileTableData(@Param("tableName") String tableName, @Param("filde") String filde,
                                                  @Param("sql") String sql);


    /**
     * 查询电子文件信息
     *
     * @param
     * @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
     * @author hbWang
     * @date 2023/6/25 11:44
     */
    List<Map<String, Object>> selectEFileTableData(@Param("tableName") String tableName, @Param("sqlId") String sqlId);

    List<Map<String, Object>> selectEFileTableDataApp(@Param("tableName") String tableName, @Param("sqlId") String sqlId);

    /**
     * 动态sql
     *
     * @param
     * @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
     * @author hbWang
     * @date 2023/6/29 17:27
     */
    List<Map<String, Object>> selectTableData(@Param("tableName") String tableName, @Param("field") String field, @Param("sql") String sql);

    /**
     * 动态sql 返回单个字段
     *
     * @param tableName
     * @param field
     * @param sql
     * @return
     */
    String selectAppData(@Param("tableName") String tableName, @Param("field") String field, @Param("sql") String sql);

    /**
     * 动态sql 返回单个字段集合
     *
     * @param tableName
     * @param field
     * @param sql
     * @return
     */
    List<String> selectAppDataList(@Param("tableName") String tableName, @Param("field") String field, @Param("sql") String sql);

    List<String> selectAppDataListLeft(@Param("tableName") String tableName, @Param("field") String field, @Param("sql") String sql);

    /**
     * 关联sql查询
     *
     * @param field
     * @param sql
     * @param tableName
     * @return
     */
    List<Map<String, Object>> selectLeftJoinTableData(@Param("field") String field, @Param("sql") String sql, @Param("tableName") String tableName);

    /**
     * 查询参数配置信息
     *
     * @return 参数配置信息
     */
    Map<String, Object> selectConfig(@Param("configKey") String configKey,
                                     @Param("tenantCode") String tenantCode);

    /**
     * 返回单条信息
     *
     * @param field
     * @param tableName
     * @param id
     * @return
     */
    Map<String, Object> selectUserData(@Param("field") String field, @Param("tableName") String tableName, @Param("id") String id);


    /**
     * 更新索引状态
     *
     * @return
     */
    int updateIndex(@Param("tableName") String tableName, @Param("sql") String sql);

    int updateIndex1(@Param("tableName") String tableName, @Param("sql") String sql);

    Map<String, Object> viewByDocid(@Param("docId") Long docId, @Param("efiletable") String efiletable, @Param("yqdatransdocTbale") String yqdatransdocTbale);

    List<Map<String, Object>> getdictdata(@Param("fieldName") String fieldName, @Param("tableName") String tableName);
}
